package com.itheima.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.mapper.UserMapper;
import com.itheima.pojo.PageBean;
import com.itheima.pojo.User;
import com.itheima.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public PageBean page(Integer pageNum, Integer pageSize, String name, Short age, Short gender, String phone) {
        //第一步，启动分页工具
        //这里放前端传过来的两个分页参数，分别是当前页，还有每页的数据条数
        PageHelper.startPage(pageNum,pageSize);
        //第二步，调用mapper层方法，你来写
        //你写一下这个方法的sql语句
        //select * from user;
        //对，然后分页工具的好处就是会拦截这个sql语句，会分成两句，也就是刚刚写的原生分页sql，就不用再写那么麻烦
        //@Select("select count(*) from user") //这个返回的结果会封装到下面page对象的total属性中
        //这个sql语句返回的是数据的总条数，也就是pageBean里的

        //@Select("select * from user limit #{pageNum},#{pageSize}") 这个返回的是整个page对象的结果
        //这个sql语句返回的是按照分页参数返回的数据
        List<User> users = userMapper.page(name,age,gender,phone);

        //第三步，把上面的集合强转为Page类型对象,这一步要死记，
        Page<User> page = (Page<User>) users;// page是分页工具提供的一个类，我也不知道咋说具体，你可以先看一下后面的步骤

        //第四步，创建PageBean对象，然后设置两个参数的值
        //怎么说。能看懂多少
        PageBean pageBean = new PageBean();
        pageBean.setTotal(page.getTotal());
        pageBean.setRows(page.getResult());
        return pageBean;
    }

    @Override
    public User userById(Integer id) {

        return userMapper.userById(id);
    }

    @Override
    public void updateUser(User user) {
        userMapper.updateUser(user);
    }

    @Override
    public void deleteById(Integer[] ids) {
        userMapper.deleteById(ids);
    }


}
